package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcPhoneZone;
import com.csun.cmny.provider.model.dto.phone.PhoneZoneBindDto;
import com.csun.cmny.provider.model.vo.DmcPhoneZoneVo;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-01-08 16:32
 * @Description: the interface dmc phone zone service.
 */
public interface DmcPhoneZoneService extends IService<DmcPhoneZone> {

    /**
     * add phone zone.
     *
     * @param dmcPhoneZone the dmc phone zone
     * @param loginAuthDto the login auth dto
     *
     * @return the int
     */
    Integer addPhoneZone(DmcPhoneZone dmcPhoneZone, LoginAuthDto loginAuthDto);

    /**
     * edit phone zone.
     *
     * @param dmcPhoneZone the dmc phone zone
     * @param loginAuthDto the login auth dto
     *
     * @return the int
     */
    Integer editPhoneZone(DmcPhoneZone dmcPhoneZone, LoginAuthDto loginAuthDto);

    /**
     * delete phone zone by id
     *
     * @param id    the id
     *
     * @return the int
     */
    Integer deletePhoneZoneById(Long id);

    /**
     * delete phone zone by device id
     *
     * @param deviceId  device id
     *
     * @return the int
     */
    Integer deletePhoneZoneByDeviceId(Long deviceId);

    /**
     * query phone zone list by device id
     *
     * @param deviceId the device id
     *
     * @return the phone zone list by device id
     */
    List<DmcPhoneZoneVo> queryPhoneZoneList(Long deviceId);

    /**
     * bind phone zone with location
     *
     * @param phoneZoneBindDto  the phone zone bind dto
     * @param loginAuthDto      the login auth dto
     *
     * @return  the int.
     */
    Integer bind(PhoneZoneBindDto phoneZoneBindDto, LoginAuthDto loginAuthDto);

    /**
     * untied phone zone with location
     *
     * @param id    the zone id
     *
     * @return  the int.
     */
    Integer zoneUntied(Long id);
}
